package com.jixi.controller;

import com.jixi.common.result.PageResult;
import com.jixi.common.result.Result;
import com.jixi.pojo.dto.CompanyRegisterDto;
import com.jixi.pojo.entity.Company;
import com.jixi.service.CompanyService;
import com.jixi.service.CooperateSchoolCompanyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@RequestMapping("/education")
public class CompanyController {
	
	@Autowired
	private CompanyService companyService;
	
	@Autowired
	private CooperateSchoolCompanyService cooperateSchoolCompanyService;
	
	/**
	 * 注册餐饮公司
	 *
	 * @param companyRegisterDto 注册信息
	 * @return 注册结果
	 */
	@PostMapping("/company/register")
	public Result companyRegister(@RequestBody CompanyRegisterDto companyRegisterDto) {
		return companyService.companyRegister(companyRegisterDto);
	}
	
	/**
	 * 获取餐饮公司列表
	 *
	 * @param pageNum       页码
	 * @param pageSize      每页数量
	 * @param companyName   公司名
	 * @param principalName 负责人名
	 * @param status        公司状态
	 * @return 公司列表
	 */
	@GetMapping("/company/list")
	public Result<PageResult> companyList(
			Integer pageNum,
			Integer pageSize,
			String companyName,
			String principalName,
			Integer status
	) {
		return companyService.companyPage(pageNum,pageSize,companyName,principalName,status);
	}
	
	/**
	 * 获取餐饮公司信息
	 *
	 * @param companyId 公司id
	 * @return 公司信息
	 */
	@GetMapping("/company/info")
	public Result<Company> getInfo(Long companyId) {
		Company company = companyService.getCompanyInfo(companyId);
		return Result.success(company);
	}
	
	/**
	 * 餐饮公司重置密码
	 *
	 * @param companyId     公司id
	 * @param resetPassword 重置密码
	 * @return 重置密码结果
	 */
	@PutMapping("/company/resetPassword")
	public Result resetPassword(Long companyId, String resetPassword) {
		return companyService.companyResetPassword(companyId,resetPassword);
	}
	
	/**
	 * 餐饮公司状态修改
	 *
	 * @param companyId 公司id
	 * @param status    状态值
	 * @return 状态修改结果
	 */
	@PutMapping("/company/status")
	public Result updateStatus(Long companyId, Integer status) {
		return companyService.UpdateCompanyStatus(companyId,status);
	}
	
	/**
	 * 获取餐饮公司的启用合作数
	 *
	 * @param companyId 餐饮公司id
	 * @return 餐饮公司合作数
	 */
	@GetMapping("/company/cooperateNum")
	public Result<Long> getCompanyCooperateNum(Long companyId) {
		return Result.success(cooperateSchoolCompanyService.countCompanyCooperateNum(companyId));
	}
	
	/**
	 * 餐饮公司删除
	 *
	 * @param companyId 公司id
	 * @return 删除结果
	 */
	@DeleteMapping("/company/delete")
	public Result delete(Long companyId) {
		return companyService.deleteCompanyById(companyId);
	}
	
	/**
	 * 更新餐饮公司绑定的银行账号
	 * @param companyId 餐饮公司id
	 * @param accountId 银行账号id
	 * @return 更新结果
	 */
	@PutMapping("/company/updateAccount")
	public Result updateAccount(Long companyId, Long accountId) {
		return companyService.updateCompanyAccount(companyId,accountId);
	}
	
}
